<?php

class CalciatoriController extends AppController {

    var $name = 'Calciatori';

    // var $scaffold;

    function index() {
        $this->set('calciatori', $this->Calciatore->find('all'));

    }
    //
    //
    //	function view($id) {
    //		$this->Post->id = $id;
    //		$this->set('post', $this->Post->read());
    //
    //	}
    //
    function add() {

    //$this->set('squadre_serie_a', $this->Calciatore->SquadraSerieA->find('list'));
    //$squadre = $this->Calciatore->SquadraSerieA->find('list');

    //$this->set(compact('squadre_serie_a'));

        $this->set('squadre', $this->Calciatore->Squadra->find('list', array('fields' => array('nome') ) ) );


        if (!empty($this->data)) {

            if ($this->Calciatore->save($this->data)) {
                $this->Session->setFlash('Your post has been saved.');
                $this->redirect(array('action' => 'add'));
            }
        }
    }



    function import() {

        if (!empty($this->data)) {
            if ($this->data['Calciatore']['uploaded_file']) {

                $handle = fopen($this->data['Calciatore']['uploaded_file']['tmp_name'], "r");

                $k = 0;

                $lines = array();

                while ( ( $line = fgetcsv($handle, 0, "|") ) !== false) {
                    $lines[] = $line;
                }

                fclose($handle);

                foreach ($lines as $key => $line) {

                    if ($line[0] && $line[2]) { //deve avere un cognome

                    //  if ($line[0] == '683') {
                        $squadra = $this->Calciatore->Squadra->findByNome($line[3]);

                        preg_match_all("/\s?([A-Z']+)[^a-z]\s?/", $line[2], $matches);

                        //var_dump($matches);

                        $cognome = trim(implode(" ", $matches[0]));

                        preg_match_all("/\s?([A-Z'][a-z]+)\s?/", $line[2], $matches);

                        $nome = implode(" ", $matches[1]);

                        //var_dump($matches);

                        $this->Calciatore->set( array(
                            'nome' => $nome,
                            'cognome' => $cognome,
                            'id' => $line[0],
                            'squadra_id' => $squadra['Squadra']['id'],
                            'ruolo' => $line[5]
                            )
                        );

                        $this->Calciatore->save();

                    //   }
                    }
                }
            //                }
            }
        }

    }

    function calcola_punteggio($data) {

        $modificatori = array(
            'gol_segnati' => 3,
            'gol_subiti' => -1,
            'num_assist' => 1,
            'ammonito' => -0.5,
            'espulso' => -1,
            'rigore_parato' => 3,
            'rigore_sbagliato' => -3,
            'autogol' => -2
        );

        $data["Prestazione"]["voto_calcolato"] = $data["Prestazione"]["voto_gazzetta"];


        foreach ($modificatori as $key => $value) {

            $data["Prestazione"]["voto_calcolato"] +=  ($data["Prestazione"][$key] * $value);

        }

        //se per caso ha preso sv e cmq ha fatto presenza (la gazzetta gli ha dato come voto calcolato 6), gli si da 6 di default
        if ($data["Prestazione"]["min_inf_25"] &&
            $data["Prestazione"]["voto_gazzetta"] == 0 &&
            $data["Prestazione"]["voto_calcolato_gazzetta"] == 6) {
            $data["Prestazione"]["voto_calcolato"] = 6;
        }

        return  $data["Prestazione"]["voto_calcolato"];

    }


    function importa_prestazioni() {

        set_time_limit(0);

        if (!empty($this->data)) {

            if ($this->data['Calciatore']['uploaded_file']) {

                $giornata_serie_a = intval(trim(str_replace(array( "MCC", ".txt"), array("", ""), $this->data['Calciatore']['uploaded_file']['name'])));

                $handle = fopen($this->data['Calciatore']['uploaded_file']['tmp_name'], "r");

                $k = 0;

                $lines = array();

                while ( ( $line = fgetcsv($handle, 0, "|") ) !== false) {
                    $lines[] = $line;
                }

                fclose($handle);

                //debug($this->Calciatore->Prestazione->Giornata);

                $giornata = $this->Calciatore->Prestazione->Giornata->findByGiornataseriea($giornata_serie_a);

                $this->Calciatore->Prestazione->deleteAll(array("giornata_id" => $giornata["Giornata"]["id"]), false);

                foreach ($lines as $key => $line) {

                //scorro le linee
                    if ($key > 15000) break;
                    if ($line[0]) { //deve avere un cognome


                        $calciatore = $this->Calciatore->findById($line[0]);

                        $this->Calciatore->Prestazione->create();

                        // debug($line[0]);

                        $data = $this->Calciatore->Prestazione->set( array(
                            'calciatore_id' => $calciatore["Calciatore"]["id"],
                            'giornata_id' => $line[1],
                            'presenza' => $line[6],
                            'voto_gazzetta' => $line[10],
                            'voto_calcolato_gazzetta' => $line[7],
                            'min_inf_25' => $line[8],
                            'min_sup_25' => $line[9],
                            'gol_segnati' => $line[11],
                            'gol_subiti' => $line[12],
                            'gol_vittoria' => $line[13],
                            'gol_pareggio' => $line[14],
                            'num_assist' => $line[15],
                            'ammonito' => $line[16],
                            'espulso' => $line[17],
                            'rigore_tirato' => $line[18],
                            'rigore_subito' => $line[19],
                            'rigore_parato' => $line[20],
                            'rigore_sbagliato' => $line[21],
                            'autogol' => $line[22],
                            'entrato' => $line[23],
                            'titolare' => $line[24]
                            )
                        );


                        $this->Calciatore->Prestazione->set('voto_calcolato', $this->calcola_punteggio($data));

                      //  debug ($this->Calciatore->Prestazione->data);

                        if ($calciatore["Calciatore"]["id"])

                            $this->Calciatore->Prestazione->save();

                    }
                } //chiusura ciclo linee
            //                }
            }
        }

    }
}

